package com.imut.lagain.service;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 生理期关怀服务接口
 */
public interface IPeriodCareService {
    
    /**
     * 创建关怀提醒
     * @param userId 用户ID
     * @param partnerId 伴侣ID
     * @param careType 关怀类型
     * @param message 关怀消息
     * @param remindTime 提醒时间
     * @return 是否成功
     */
    boolean createCareReminder(Long userId, Long partnerId, String careType, String message, LocalDateTime remindTime);
    
    /**
     * 发送关怀消息
     * @param fromUserId 发送者ID
     * @param toUserId 接收者ID
     * @param careType 关怀类型
     * @param message 关怀消息
     * @return 是否成功
     */
    boolean sendCareMessage(Long fromUserId, Long toUserId, String careType, String message);
    
    /**
     * 获取关怀建议
     * @param userId 用户ID
     * @param currentPhase 当前生理期阶段
     * @return 关怀建议列表
     */
    List<Map<String, String>> getCareRecommendations(Long userId, String currentPhase);
    
    /**
     * 同步生理期状态给伴侣
     * @param userId 用户ID
     * @param partnerId 伴侣ID
     * @param phaseInfo 阶段信息
     * @return 是否成功
     */
    boolean syncPeriodStatus(Long userId, Long partnerId, Map<String, Object> phaseInfo);
    
    /**
     * 获取关怀任务列表
     * @param userId 用户ID
     * @param currentPhase 当前生理期阶段
     * @return 关怀任务列表
     */
    List<Map<String, Object>> getCareTasks(Long userId, String currentPhase);
    
    /**
     * 完成关怀任务
     * @param userId 用户ID
     * @param taskId 任务ID
     * @param completedBy 完成者ID
     * @return 是否成功
     */
    boolean completeCareTask(Long userId, String taskId, Long completedBy);
    
    /**
     * 获取关怀历史记录
     * @param userId 用户ID
     * @param days 查询天数
     * @return 关怀记录列表
     */
    List<Map<String, Object>> getCareHistory(Long userId, int days);
    
    /**
     * 设置关怀偏好
     * @param userId 用户ID
     * @param preferences 偏好设置
     * @return 是否成功
     */
    boolean setCarePreferences(Long userId, Map<String, Object> preferences);
    
    /**
     * 获取关怀偏好
     * @param userId 用户ID
     * @return 偏好设置
     */
    Map<String, Object> getCarePreferences(Long userId);
    
    /**
     * 生成关怀报告
     * @param userId 用户ID
     * @param partnerId 伴侣ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 关怀报告
     */
    Map<String, Object> generateCareReport(Long userId, Long partnerId, LocalDateTime startDate, LocalDateTime endDate);
}
